home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / you-075a.lha / you-075a / generics.h < prev    next >
C/C++ Source or Header  |  1992-06-18  |  2KB  |  55 lines

  1. /*
  2.  
  3.  * Generic operators...
  4.  
  5.  */
  6.  
  7. extern LispObject defgeneric(Env,LispObject,LispObject,LispObject);
  8. extern LispObject make_generic(char *,int);
  9. extern LispObject make_method(LispObject (*)(),LispObject,int);
  10. extern LispObject make_default_generic(char *,LispObject (*)(),int);
  11. extern LispObject Fn_next_method_p(Env,LispObject);
  12. extern LispObject Fn_call_next_method(Env,LispObject);
  13. extern LispObject Fn_current_method(Env);
  14.  
  15. extern EUDECL( call_generic);
  16. extern void my_add_method(LispObject*,LispObject,LispObject);
  17. extern LispObject flat_list_copy(LispObject*);
  18.  
  19. /*
  20.  
  21.  * Call utitlities.
  22.  
  23.  */
  24.  
  25. extern LispObject generic_apply(LispObject*, LispObject,LispObject);
  26. extern LispObject generic_apply_1(LispObject*, LispObject,LispObject);
  27. extern LispObject generic_apply_2(LispObject*, LispObject,
  28.                                LispObject, LispObject);
  29. extern LispObject generic_apply_3(LispObject*, LispObject,
  30.                   LispObject,LispObject,LispObject);
  31. extern LispObject generic_apply_4(LispObject*,  LispObject,
  32.               LispObject, LispObject, LispObject, LispObject);
  33.  
  34. #define is_generic(x)     (EUCALL_2(Fn_subclassp,classof(x),Generic) != nil)
  35.  
  36. #define generic_name(x)        slotref(x,0)
  37. #define generic_home(x)     slotref(x,1)
  38. #define generic_argtype(x)    slotref(x,2)
  39. #define generic_method_class(x)    slotref(x,3)
  40. #define generic_discriminator(x)    slotref(x,4)
  41. #define generic_cache_table(x)    slotref(x,5)
  42. #define generic_method_table(x) slotref(x,6)
  43.  
  44. #define N_SLOTS_IN_GENERIC_CLASS 7
  45.  
  46. #define method_qualifier(x)     slotref(x,0)
  47. #define method_signature(x)    slotref(x,1)
  48. #define method_host(x)        slotref(x,2)
  49. #define method_function(x)     slotref(x,3)
  50. #define method_fixed(x)     slotref(x,4)
  51.  
  52. #define is_method(x)     (EUCALL_2(Fn_subclassp,classof(x),Method) != nil)
  53.  
  54. #define N_SLOTS_IN_METHOD_CLASS 5
  55.